/*
 * Copyright 2007 Dan Hodge
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package net.datajanitor.baja.rest;

import net.datajanitor.baja.BoxConnection;
import net.datajanitor.baja.BoxConnectionException;
import net.datajanitor.baja.BoxConnectionFactory;
import net.datajanitor.baja.BoxConnectionImpl;
import net.datajanitor.baja.spi.Authenticator;
import net.datajanitor.baja.spi.BoxConnectionProvider;
import net.datajanitor.baja.spi.support.CachingAuthenticatorFactory;
import net.datajanitor.baja.spi.support.UserPassAuthenticator;

public class RestBoxConnectionFactory implements BoxConnectionFactory {
    private BoxConnectionProvider provider;
    private CachingAuthenticatorFactory cacheFactory;
    
    public RestBoxConnectionFactory() {
        this.provider = new RestBoxConnectionProvider();
        this.cacheFactory = new CachingAuthenticatorFactory();
    }
    
    public BoxConnection newConnection(String username, String password) throws BoxConnectionException {
        Authenticator authenticator = new UserPassAuthenticator(username, password);
       
        return new BoxConnectionImpl(this.cacheFactory.getCachingAuthenticator(authenticator), this.provider);
    }
}
